// api接口层的封装
import Vue from 'vue'
import Api from './api'
import Wx from './wx'
const mApi = new Api()
const mWx = new Wx()

function install(Vue) {
  if (install.installedapi) {
    return
  }
  window.apiready = function () {
    document.dispatchEvent(new MessageEvent('apiready', {
      data: {}
    }))
  }
  // 签名
  Vue.mixin({
    beforeCreate() {
      if (this.$root.$children.length > 0  && this.$root.$children[0] === this) {
        wx.ready(function () {
          this.$options.wxReady && this.$options.wxReady.bind(this).call()
        }.bind(this));
        wx.error(function (res) {
          // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
          this.$options.wxError && this.$options.wxError.bind(this).call(res)
        }.bind(this));
      }
    }
  })
  install.installedapi = true
  Vue.prototype.slow = mApi
  Vue.prototype.get = mApi.get.bind(mApi)
  Vue.prototype.post = mApi.post.bind(mApi)
  Vue.prototype.picUrl = mApi.pic.bind(mApi)
  Vue.prototype.setData = mApi.setData.bind(mApi)
  Vue.prototype.getData = mApi.getData.bind(mApi)
  Vue.prototype.wx = mWx
  Vue.prototype.getDictionaries=mApi.getDictionaries.bind(mApi)
}

const __Init = {
  install
}


Vue.use(__Init)